package com.sihan.framework.etm.service;

import com.framework.mybatis.service.BaseService;
import com.sihan.framework.etm.entity.Permission;
import com.sihan.framework.etm.vo.PermissionVO;
import java.util.List;
import java.util.Set;

public interface PermissionService extends BaseService<Permission, String> {

  /**
   * 通过角色名称集获取权限名称集
   *
   * @param roles 角色名称集
   * @return 权限名称集
   */
  Set<String> selectPermissionsByRoles(Set<String> roles);

  /**
   * 添加角色信息
   *
   * @param permission 角色信息
   */
  void addPermission(Permission permission);

  /**
   * 更新角色信息
   *
   * @param permission 角色信息
   */
  void updatePermission(Permission permission);

  /**
   * 删除角色信息
   *
   * @param permissionIds 角色Id
   */
  void deletePermission(List<String> permissionIds);

  /**
   * 获取权限信息(数组形式)
   *
   * @return 权限信息(数组形式)
   */
  List<PermissionVO> permissionList();

  /**
   * 获取权限信息(树状形式)
   *
   * @return 权限信息(树状形式)
   */
  List<PermissionVO> permissionTree();
  
  Set<String> rolePermissions(String roleId);

  /**
   * 获取该用户的菜单权限
   *
   * @param username 用户名
   * @return 该用户对应的菜单权限
   */
  List<PermissionVO> selectMenuPermissions(String username);
}
